<?php

require_once 'HTMLPurifier/AttrTransform.php';

/**
 * Generic pre-transform that converts an attribute with a fixed number of
 * values (enumerated) to CSS.
 */
class HTMLPurifier_AttrTransform_EnumToCSS extends HTMLPurifier_AttrTransform {
	
	/**
	 * Name of attribute to transform from
	 */
	var $attr;
	
	/**
	 * Lookup array of attribute values to CSS
	 */
	var $enumToCSS = array();
	
	/**
	 * Case sensitivity of the matching
	 * @warning Currently can only be guaranteed to work with ASCII
	 *		  values.
	 */
	var $caseSensitive = false;
	
	/**
	 * @param $attr String attribute name to transform from
	 * @param $enumToCSS Lookup array of attribute values to CSS
	 * @param $case_sensitive Boolean case sensitivity indicator, default false
	 */
	function HTMLPurifier_AttrTransform_EnumToCSS($attr, $enum_to_css, $case_sensitive = false) {
		$this->attr = $attr;
		$this->enumToCSS = $enum_to_css;
		$this->caseSensitive = (bool) $case_sensitive;
	}
	
	function transform($attr, $config, &$context) {
		
		if (!isset($attr[$this->attr])) return $attr;
		
		$value = trim($attr[$this->attr]);
		unset($attr[$this->attr]);
		
		if (!$this->caseSensitive) $value = strtolower($value);
		
		if (!isset($this->enumToCSS[$value])) {
			return $attr;
		}
		
		$this->prependCSS($attr, $this->enumToCSS[$value]);
		
		return $attr;
		
	}
	
}

